<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Requirements</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="  Installation from Source Code"
HREF="installation.html"><LINK
REL="PREVIOUS"
TITLE="Short Version"
HREF="install-short.html"><LINK
REL="NEXT"
TITLE="Getting The Source"
HREF="install-getsource.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Short Version"
HREF="install-short.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 15. Installation from Source Code</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Getting The Source"
HREF="install-getsource.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INSTALL-REQUIREMENTS"
>15.2. Requirements</A
></H1
><P
>   In general, a modern Unix-compatible platform should be able to run
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>.
   The platforms that had received specific testing at the
   time of release are listed in <A
HREF="supported-platforms.html"
>Section 15.6</A
>
   below. In the <TT
CLASS="FILENAME"
>doc</TT
> subdirectory of the distribution
   there are several platform-specific <ACRONYM
CLASS="ACRONYM"
>FAQ</ACRONYM
> documents you
   might wish to consult if you are having trouble.
  </P
><P
>   The following software packages are required for building
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>:

   <P
></P
></P><UL
><LI
><P
>      

      <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> <SPAN
CLASS="APPLICATION"
>make</SPAN
> version 3.80 or newer is required; other
      <SPAN
CLASS="APPLICATION"
>make</SPAN
> programs or older <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> <SPAN
CLASS="APPLICATION"
>make</SPAN
> versions will <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>not</I
></SPAN
> work.
      <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> <SPAN
CLASS="APPLICATION"
>make</SPAN
> is often installed under
      the name <TT
CLASS="FILENAME"
>gmake</TT
>; this document will always
      refer to it by that name. (On some systems
      <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> <SPAN
CLASS="APPLICATION"
>make</SPAN
> is the default tool with the name
      <TT
CLASS="FILENAME"
>make</TT
>.) To test for <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
>
      <SPAN
CLASS="APPLICATION"
>make</SPAN
> enter:
</P><PRE
CLASS="SCREEN"
><KBD
CLASS="USERINPUT"
>gmake --version</KBD
></PRE
><P>
     </P
></LI
><LI
><P
>      You need an <ACRONYM
CLASS="ACRONYM"
>ISO</ACRONYM
>/<ACRONYM
CLASS="ACRONYM"
>ANSI</ACRONYM
> C compiler (at least
      C89-compliant). Recent
      versions of <SPAN
CLASS="PRODUCTNAME"
>GCC</SPAN
> are recommendable, but
      <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> is known to build using a wide variety
      of compilers from different vendors.
     </P
></LI
><LI
><P
>      <SPAN
CLASS="APPLICATION"
>tar</SPAN
> is required to unpack the source
      distribution, in addition to either
      <SPAN
CLASS="APPLICATION"
>gzip</SPAN
> or <SPAN
CLASS="APPLICATION"
>bzip2</SPAN
>.
     </P
></LI
><LI
><P
>      
      

      The <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> <SPAN
CLASS="PRODUCTNAME"
>Readline</SPAN
> library is used by
      default.  It allows <SPAN
CLASS="APPLICATION"
>psql</SPAN
> (the
      PostgreSQL command line SQL interpreter) to remember each
      command you type, and allows you to use arrow keys to recall and
      edit previous commands.  This is very helpful and is strongly
      recommended.  If you don't want to use it then you must specify
      the <TT
CLASS="OPTION"
>--without-readline</TT
> option to
      <TT
CLASS="FILENAME"
>configure</TT
>. As an alternative, you can often use the
      BSD-licensed <TT
CLASS="FILENAME"
>libedit</TT
> library, originally
      developed on <SPAN
CLASS="PRODUCTNAME"
>NetBSD</SPAN
>. The
      <TT
CLASS="FILENAME"
>libedit</TT
> library is
      GNU <SPAN
CLASS="PRODUCTNAME"
>Readline</SPAN
>-compatible and is used if
      <TT
CLASS="FILENAME"
>libreadline</TT
> is not found, or if
      <TT
CLASS="OPTION"
>--with-libedit-preferred</TT
> is used as an
      option to <TT
CLASS="FILENAME"
>configure</TT
>. If you are using a package-based
      Linux distribution, be aware that you need both the
      <TT
CLASS="LITERAL"
>readline</TT
> and <TT
CLASS="LITERAL"
>readline-devel</TT
> packages, if
      those are separate in your distribution.
     </P
></LI
><LI
><P
>      

      The <SPAN
CLASS="PRODUCTNAME"
>zlib</SPAN
> compression library is
      used by default. If you don't want to use it then you must
      specify the <TT
CLASS="OPTION"
>--without-zlib</TT
> option to
      <TT
CLASS="FILENAME"
>configure</TT
>. Using this option disables
      support for compressed archives in <SPAN
CLASS="APPLICATION"
>pg_dump</SPAN
> and
      <SPAN
CLASS="APPLICATION"
>pg_restore</SPAN
>.
     </P
></LI
></UL
><P>
  </P
><P
>   The following packages are optional.  They are not required in the
   default configuration, but they are needed when certain build
   options are enabled, as explained below:

   <P
></P
></P><UL
><LI
><P
>      To build the server programming language
      <SPAN
CLASS="APPLICATION"
>PL/Perl</SPAN
> you need a full
      <SPAN
CLASS="PRODUCTNAME"
>Perl</SPAN
> installation, including the
      <TT
CLASS="FILENAME"
>libperl</TT
> library and the header files.
      Since <SPAN
CLASS="APPLICATION"
>PL/Perl</SPAN
> will be a shared
      library, the 
      <TT
CLASS="FILENAME"
>libperl</TT
> library must be a shared library
      also on most platforms.  This appears to be the default in
      recent <SPAN
CLASS="PRODUCTNAME"
>Perl</SPAN
> versions, but it was not
      in earlier versions, and in any case it is the choice of whomever
      installed Perl at your site.
      If you intend to make more than incidental use of
      <SPAN
CLASS="APPLICATION"
>PL/Perl</SPAN
>, you should ensure that the
      <SPAN
CLASS="PRODUCTNAME"
>Perl</SPAN
> installation was built with the
      <TT
CLASS="LITERAL"
>usemultiplicity</TT
> option enabled (<TT
CLASS="LITERAL"
>perl -V</TT
>
      will show whether this is the case).
     </P
><P
>      If you don't have the shared library but you need one, a message
      like this will appear during the <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>
      build to point out this fact:
</P><PRE
CLASS="SCREEN"
>*** Cannot build PL/Perl because libperl is not a shared library.
*** You might have to rebuild your Perl installation.  Refer to
*** the documentation for details.</PRE
><P>
      (If you don't follow the on-screen output you will merely notice
      that the <SPAN
CLASS="APPLICATION"
>PL/Perl</SPAN
> library object,
      <TT
CLASS="FILENAME"
>plperl.so</TT
> or similar, will not be
      installed.)  If you see this, you will have to rebuild and
      install <SPAN
CLASS="PRODUCTNAME"
>Perl</SPAN
> manually to be able to
      build <SPAN
CLASS="APPLICATION"
>PL/Perl</SPAN
>.  During the
      configuration process for <SPAN
CLASS="PRODUCTNAME"
>Perl</SPAN
>,
      request a shared library.
     </P
></LI
><LI
><P
>      To build the <SPAN
CLASS="APPLICATION"
>PL/Python</SPAN
> server programming
      language, you need a <SPAN
CLASS="PRODUCTNAME"
>Python</SPAN
>
      installation with the header files and
      the <SPAN
CLASS="APPLICATION"
>distutils</SPAN
> module.  The minimum
      required version is <SPAN
CLASS="PRODUCTNAME"
>Python</SPAN
>
      2.2.  <SPAN
CLASS="PRODUCTNAME"
>Python 3</SPAN
> is supported if it's
      version 3.1 or later; but see
      
      <A
HREF="plpython-python23.html"
>Section 42.1</A
>
      when using Python 3.
     </P
><P
>      Since <SPAN
CLASS="APPLICATION"
>PL/Python</SPAN
> will be a shared
      library, the 
      <TT
CLASS="FILENAME"
>libpython</TT
> library must be a shared library
      also on most platforms.  This is not the case in a default
      <SPAN
CLASS="PRODUCTNAME"
>Python</SPAN
> installation.  If after
      building and installing <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> you have a file called
      <TT
CLASS="FILENAME"
>plpython.so</TT
> (possibly a different
      extension), then everything went well.  Otherwise you should
      have seen a notice like this flying by:
</P><PRE
CLASS="SCREEN"
>*** Cannot build PL/Python because libpython is not a shared library.
*** You might have to rebuild your Python installation.  Refer to
*** the documentation for details.</PRE
><P>
      That means you have to rebuild (part of) your
      <SPAN
CLASS="PRODUCTNAME"
>Python</SPAN
> installation to create this
      shared library.
     </P
><P
>      If you have problems, run <SPAN
CLASS="PRODUCTNAME"
>Python</SPAN
> 2.3 or later's
      configure using the <TT
CLASS="LITERAL"
>--enable-shared</TT
> flag.  On some
      operating systems you don't have to build a shared library, but
      you will have to convince the <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> build
      system of this.  Consult the <TT
CLASS="FILENAME"
>Makefile</TT
> in
      the <TT
CLASS="FILENAME"
>src/pl/plpython</TT
> directory for details.
     </P
></LI
><LI
><P
>      To build the <SPAN
CLASS="APPLICATION"
>PL/Tcl</SPAN
>
      procedural language, you of course need a <SPAN
CLASS="PRODUCTNAME"
>Tcl</SPAN
>
      installation.  If you are using a pre-8.4 release of
      <SPAN
CLASS="PRODUCTNAME"
>Tcl</SPAN
>, ensure that it was built without multithreading
      support.
     </P
></LI
><LI
><P
>      To enable Native Language Support (<ACRONYM
CLASS="ACRONYM"
>NLS</ACRONYM
>), that
      is, the ability to display a program's messages in a language
      other than English, you need an implementation of the
      <SPAN
CLASS="APPLICATION"
>Gettext</SPAN
> <ACRONYM
CLASS="ACRONYM"
>API</ACRONYM
>.  Some operating
      systems have this built-in (e.g., <SPAN
CLASS="SYSTEMITEM"
>Linux</SPAN
>, <SPAN
CLASS="SYSTEMITEM"
>NetBSD</SPAN
>,
      <SPAN
CLASS="SYSTEMITEM"
>Solaris</SPAN
>), for other systems you
      can download an add-on package from <A
HREF="http://www.gnu.org/software/gettext/"
TARGET="_top"
>http://www.gnu.org/software/gettext/</A
>.
      If you are using the <SPAN
CLASS="APPLICATION"
>Gettext</SPAN
> implementation in
      the <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> C library then you will additionally
      need the <SPAN
CLASS="PRODUCTNAME"
>GNU Gettext</SPAN
> package for some
      utility programs.  For any of the other implementations you will
      not need it.
     </P
></LI
><LI
><P
>      You need <SPAN
CLASS="APPLICATION"
>Kerberos</SPAN
>, <SPAN
CLASS="PRODUCTNAME"
>OpenSSL</SPAN
>,
      <SPAN
CLASS="PRODUCTNAME"
>OpenLDAP</SPAN
>, and/or
      <SPAN
CLASS="APPLICATION"
>PAM</SPAN
>, if you want to support authentication or
      encryption using those services.
     </P
></LI
></UL
><P>
  </P
><P
>   If you are building from a <SPAN
CLASS="PRODUCTNAME"
>Git</SPAN
> tree instead of
   using a released source package, or if you want to do server development,
   you also need the following packages:

   <P
></P
></P><UL
><LI
><P
>      
      
      
      

      GNU <SPAN
CLASS="APPLICATION"
>Flex</SPAN
> and <SPAN
CLASS="APPLICATION"
>Bison</SPAN
>
      are needed to build from a Git checkout, or if you changed the actual
      scanner and parser definition files. If you need them, be sure
      to get <SPAN
CLASS="APPLICATION"
>Flex</SPAN
> 2.5.31 or later and
      <SPAN
CLASS="APPLICATION"
>Bison</SPAN
> 1.875 or later. Other <SPAN
CLASS="APPLICATION"
>lex</SPAN
>
      and <SPAN
CLASS="APPLICATION"
>yacc</SPAN
> programs cannot be used.
     </P
></LI
><LI
><P
>      

      <SPAN
CLASS="APPLICATION"
>Perl</SPAN
> 5.8 or later is needed to build from a Git checkout,
      or if you changed the input files for any of the build steps that
      use Perl scripts.  If building on Windows you will need
      <SPAN
CLASS="APPLICATION"
>Perl</SPAN
> in any case.
     </P
></LI
></UL
><P>
  </P
><P
>   If you need to get a <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> package, you can find
   it at your local <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> mirror site (see <A
HREF="http://www.gnu.org/order/ftp.html"
TARGET="_top"
>http://www.gnu.org/order/ftp.html</A
>
   for a list) or at <A
HREF="ftp://ftp.gnu.org/gnu/"
TARGET="_top"
>ftp://ftp.gnu.org/gnu/</A
>.
  </P
><P
>   Also check that you have sufficient disk space. You will need about
   100 MB for the source tree during compilation and about 20 MB for
   the installation directory. An empty database cluster takes about
   35 MB; databases take about five times the amount of space that a
   flat text file with the same data would take. If you are going to
   run the regression tests you will temporarily need up to an extra
   150 MB. Use the <TT
CLASS="COMMAND"
>df</TT
> command to check free disk
   space.
  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="install-short.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="install-getsource.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Short Version</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Getting The Source</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>